Client–server model

The client–server model is a computing model that acts as a distributed application which partitions tasks or workloads between the providers of a resource or service, called servers, and service requesters, called clients.[1] Often clients and servers communicate over a computer network on separate hardware, but both client and server may reside in the same system. A server machine is a host that is running one or more server programs which share their resources with clients. A client does not share any of its resources, but requests a server's content or service function. Clients therefore initiate communication sessions with servers which await incoming requests.

The client–server characteristic describes the relationship of cooperating programs in an application. The server component provides a function or service to one or many clients, which initiate requests for such services.

Functions such as email exchange, web access and database access, are built on the client–server model. Users accessing banking services from their computer use a web browser client to send a request to a web server at a bank. That program may in turn forward the request to its own database client program that sends a request to a database server at another bank computer to retrieve the account information. The balance is returned to the bank database client, which in turn serves it back to the web browser client displaying the results to the user. The client–server model has become one of the central ideas of network computing. Many business applications being written today use the client–server model. So do the Internet's main application protocols, such as HTTP, SMTP, Telnet, and DNS.

The interaction between client and server is often described using sequence diagrams. The Unified Modeling Language has support for sequence diagrams.

Specific types of clients include web browsers, email clients, and online chat clients.

Specific types of servers include web servers, ftp servers, application servers, database servers, name servers, mail servers, file servers, print servers, and terminal servers. Most web services are also types of servers.

Contents

Comparison to peer-to-peer architecture

A client-server network involves multiple clients connecting to a single, central server. The file server on a client-server network is a high capacity, high speed computer with a large hard disk capacity.

By contrast, peer-to-peer networks involve two or more computers pooling individual resources such as disk drives, CD-ROMs and printers.[2] These shared resources are available to every computer in the network, while each two of them communicate in a session. Each computer acts as both the client and the server which means all the computers on the network are equals, that is where the term peer-to-peer comes from. The advantage of peer-to-peer networking is the easier control concept not requiring any additional coordination entity and not delaying transfers by routing via server entities. However, the collision of session may be larger than with routing via server nodes.

In the peer to peer network, software applications can be installed on the single computer and shared by every computer in the network. They are also cheaper to set up because most desktop operating systems have the software required for the network installed by default. On the other hand, the client-server model works with any size or physical layout of LAN and doesn't tend to slow down with a heavy use.[3]

Peer-to-peer networks are typically less secure than a client-server networks because security is handled by the individual computers, not controlled and supervised on the network as a whole. The resources of the computers in the network can become congested as they have to support not only the workstation user, but also the requests from network users. It may be difficult to provide systemwide services when the client operating system typically used in this type of network is incapable of hosting the service.

Client-server networks with their additional capacities have a higher initial setup cost for networking than peer to peer networks. The long-term aspect of administering a client-server network with applications largely server-hosted surely saves administering effort compared to administering the application settings per each client. In addition the concentration of functions in performant servers allows for lower grade performance qualification of the clients.

It is possible to set up a server on a modern desktop computer, but it is recommended to consider investment in enterprise-wide server facilities with standardised choice of hardware and software and with a systematic and remotely operable administering strategy. It is easier to configure and manage the server hardware and software compared to the distributed administering requirements with a flock of computers.[4][5]

Challenges

Generally a server may be challenged beyond its capabilities. Then a single server may cause a bottleneck or constraints problem. However, servers may be cloned and networked to fulfill all known capacity and performance requirements. Limitations include network load, network address volume, and transaction recovery time.

Aspects of comparison for other architectural concepts today include cloud computing as well. Possible design decision considerations might be:

See also

References

  1. ^ "Distributed Application Architecture". Sun Microsystem. http://java.sun.com/developer/Books/jdbc/ch07.pdf. Retrieved 2009-06-16. 
  2. ^ Understanding peer-to-peer networking
  3. ^ [Peer-to-Peer Networking and Applications]
  4. ^ Book: Computers are your future
  5. ^ Peer to Peer vs. Client/Server Networks